﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using ENT.GP.Datos.MysqlHelper;
using System.Data;
using System.IO;
using System.Configuration;

namespace ENT.GP.Core.Estadisticas
{
    public class Estadisticas
    {
        private string strRegion="";
        private string strProvincia="";
        private string strCanton = "";
        private int totalPais = 0;
        private double douTotalProyecto=0;
        private double douInvPB=0;
        private double douInvContraparte=0;
        private int intNumeroProyectos = 0;
        private int intNProyectosProv = 0;

        public void generar(string strRura, int idEmp)
        {
            string strNombreXML = strRura;
            Escribir(strNombreXML, idEmp);
        }


        //Esta funcion permite escribir en un archivo XML
        public void Escribir(string nombre_xml, int idEmp)
        {
            HelperMySql objhm = HelperMySql.ObtenerConexion("");

            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
            
            System.Xml.XmlNode regiones = doc.CreateElement("regiones");
            doc.AppendChild(regiones);
           
            MySql.Data.MySqlClient.MySqlParameter[] parametros = new MySql.Data.MySqlClient.MySqlParameter[1];
            parametros[0] = new MySql.Data.MySqlClient.MySqlParameter("IDEMP1", idEmp);


            DataRow fila = objhm.EjecutarStoreProcedure(parametros, "obtener_estadistica_pais").Tables[0].Rows[0];
            strProvincia = "pais";
            int.TryParse(fila[0].ToString(), out totalPais);
            douTotalProyecto = Convert.ToDouble(fila[1]);
            douInvPB = Convert.ToDouble(fila[2]);
            douInvContraparte = Convert.ToDouble(fila[3]);

            System.Xml.XmlNode region1 = doc.CreateElement("region");

            System.Xml.XmlAttribute ids1 = doc.CreateAttribute("ids");
            ids1.InnerText = strProvincia;
            region1.Attributes.Append(ids1);

            

            System.Xml.XmlAttribute Tot_projects1 = doc.CreateAttribute("Tot_projects");
            Tot_projects1.InnerText = "" + douTotalProyecto.ToString().Replace(",",".");
            region1.Attributes.Append(Tot_projects1);

            System.Xml.XmlAttribute Inv_pb_tot1 = doc.CreateAttribute("Inv_pb_tot");
            Inv_pb_tot1.InnerText = "" + douInvPB.ToString().Replace(",", "."); ;
            region1.Attributes.Append(Inv_pb_tot1);

            System.Xml.XmlAttribute Inv_con_tot1 = doc.CreateAttribute("Inv_con_tot");
            Inv_con_tot1.InnerText = "" + douInvContraparte.ToString().Replace(",", "."); ;
            region1.Attributes.Append(Inv_con_tot1);

            System.Xml.XmlAttribute num_proy = doc.CreateAttribute("num_proy");
            num_proy.InnerText = "" + totalPais.ToString();
            region1.Attributes.Append(num_proy);

            regiones.AppendChild(region1);

            foreach (DataRow items in objhm.EjecutarStoreProcedure(parametros, "obtener_estadistica").Tables[0].Rows)
            {
                strRegion = Convert.ToString(items[0]).Replace("Regional", "Regi" + char.ConvertFromUtf32(243) + "n");
                strProvincia = Convert.ToString(items[1]);
                strCanton = items[2].ToString();
                int.TryParse(items[3].ToString(), out intNumeroProyectos);                
                douInvPB = Convert.ToDouble(items[4]);
                douInvContraparte = Convert.ToDouble(items[5]);
                douTotalProyecto = Convert.ToDouble(items[6]);
                int.TryParse(items[7].ToString(), out intNProyectosProv);
                

                System.Xml.XmlNode region = doc.CreateElement("region");

                System.Xml.XmlAttribute ids = doc.CreateAttribute("ids");
                ids.InnerText = strProvincia;
                region.Attributes.Append(ids);

                System.Xml.XmlAttribute canton = doc.CreateAttribute("canton");
                canton.InnerText = strCanton;
                region.Attributes.Append(canton);

                System.Xml.XmlAttribute Tot_provincia = doc.CreateAttribute("Tot_provincia");
                Tot_provincia.InnerText = "" + intNProyectosProv;
                region.Attributes.Append(Tot_provincia);
                
                System.Xml.XmlAttribute Tot_projects = doc.CreateAttribute("Tot_projects");
                Tot_projects.InnerText = "" + intNumeroProyectos;
                region.Attributes.Append(Tot_projects);

                System.Xml.XmlAttribute Inv_pb_tot = doc.CreateAttribute("Inv_pb_tot");
                Inv_pb_tot.InnerText = "" + douInvPB.ToString().Replace(",", "."); ;
                region.Attributes.Append(Inv_pb_tot);

                System.Xml.XmlAttribute Inv_con_tot = doc.CreateAttribute("Inv_con_tot");
                Inv_con_tot.InnerText = "" + douInvContraparte.ToString().Replace(",", "."); ;
                region.Attributes.Append(Inv_con_tot);

                System.Xml.XmlAttribute reg = doc.CreateAttribute("region");
                reg.InnerText = strRegion;
                region.Attributes.Append(reg);

                regiones.AppendChild(region);
            }

            System.Xml.XmlNode url = doc.CreateElement("region");

            System.Xml.XmlAttribute ids_url = doc.CreateAttribute("ids");
            ids_url.InnerText = "URL";
            url.Attributes.Append(ids_url);



            System.Xml.XmlAttribute urls = doc.CreateAttribute("urls");
            urls.InnerText = ConfigurationManager.AppSettings.Get("urlDetalle");
            url.Attributes.Append(urls);

            regiones.AppendChild(url);

            var xms = new XmlWriterSettings();
            xms.Encoding = Encoding.Default;
            
            var infoDatos = string.Format("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>{0}",doc.InnerXml);
            infoDatos = infoDatos.Replace(">", ">"+Environment.NewLine);
            File.WriteAllText(nombre_xml,infoDatos,Encoding.Default);
            
            
           // doc.Save(XmlWriter.Create(nombre_xml, xms));
            
           // doc.Save(nombre_xml);
            
            
            
        }

    }

}
